package org.batatasframework.properties;

import org.batatasframework.expression.ExpressionClause;
import org.batatasframework.values.ValueReader;

/**
 * <pre>
 * 表示一个完整的定义，一个配置文件里可以有多个定义，每个定义可以有不同的名称；
 * 配置文件里的定义格式如：[xxxx]
 * 在使用的时候，可以根据定义的名来取得对应的定义(可能有多个)；程序里需要处理同个名称的不同定义；
 * 如：
 * [metadata]
 * name = name1
 * 
 * [metadata]
 * name = name2
 * 
 * ...
 * 
 * [metadata]
 * name = namen
 * 根据上面的定义，可以使用"metadata"这个名称取得多个定义，可能每个定义对应的是一个数据库表的定义；
 * 
 * 
 * </pre>
 * @author jackson
 *
 */
public interface PropertiesDefine extends ValueReader{
	
	PropertiesName getName();
	
	ProperitesGroup getGroup(String groupName);
	
	
	/*
	 * 以下是为了方便，代理了ExpressionValueGetter接口的方法
	 */
	ExpressionClause getExpression(String propertyName);
	
	//ValueGetter getValue(String propertyName);
	
}
